unit UnitMenu;

interface

uses
  Windows, variants, ubalcao, clipbrd, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls, jpeg, StdCtrls, Db, DBTables, Buttons, ToolWin, ComCtrls,
  ActnList, DBCtrls, ImgList, shellapi;

type
  Tfmenu = class(TForm)
    MainMenu1: TMainMenu;
    Cadastro1: TMenuItem;
    CadastroCliente1: TMenuItem;
    Locao1: TMenuItem;
    Cheques1: TMenuItem;
    Utilitrios1: TMenuItem;
    Calculadora1: TMenuItem;
    Internet1: TMenuItem;
    Word1: TMenuItem;
    Excel1: TMenuItem;
    ContasaPagar1: TMenuItem;
    ContasaReceber1: TMenuItem;
    Fornecedor1: TMenuItem;
    Vendedor1: TMenuItem;
    NotaFiscal1: TMenuItem;
    PedidoaoFornecedor1: TMenuItem;
    EntradadeProduto1: TMenuItem;
    FluxodeCaixa1: TMenuItem;
    EstoqueParcial1: TMenuItem;
    N6: TMenuItem;
    BackUp1: TMenuItem;
    restaurarBackUp1: TMenuItem;
    ActionList1: TActionList;
    cliente: TAction;
    Cadastro2: TMenuItem;
    EntradaseSadas1: TMenuItem;
    Consultas1: TMenuItem;
    Financeiro1: TMenuItem;
    Estoque1: TMenuItem;
    Ajuda1: TMenuItem;
    N1: TMenuItem;
    eclasdeAtalho1: TMenuItem;
    Comousaroprograma1: TMenuItem;
    CoolBar1: TCoolBar;
    tcadastro: TToolBar;
    bcli: TSpeedButton;
    bpr: TSpeedButton;
    bvend: TSpeedButton;
    bfor: TSpeedButton;
    bent: TSpeedButton;
    bpedc: TSpeedButton;
    bnota: TSpeedButton;
    bcota: TSpeedButton;
    pedf: TSpeedButton;
    bcontr: TSpeedButton;
    bcontp: TSpeedButton;
    bfluxo: TSpeedButton;
    CadastrodeEstado1: TMenuItem;
    CadastroCondFaturamento1: TMenuItem;
    Cotao1: TMenuItem;
    fluxosintetico: TAction;
    N2: TMenuItem;
    N3: TMenuItem;
    estoque: TAction;
    tbauxiliar: TTable;
    Produto1: TMenuItem;
    Cliente1: TMenuItem;
    Clientesemmovimento1: TMenuItem;
    Produtosemmovimento1: TMenuItem;
    Enabled: TAction;
    N4: TMenuItem;
    N5: TMenuItem;
    N7: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    VendanoBalcao1: TMenuItem;
    N8: TMenuItem;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Panel11: TPanel;
    Panel12: TPanel;
    Dadosdaempresa1: TMenuItem;
    logotipo: TAction;
    PopupMenu1: TPopupMenu;
    Vendedor2: TMenuItem;
    Estado1: TMenuItem;
    CondFaturamento1: TMenuItem;
    Produto2: TMenuItem;
    Cliente2: TMenuItem;
    Fornecedor2: TMenuItem;
    N11: TMenuItem;
    SpeedButton1: TSpeedButton;
    N12: TMenuItem;
    eclasdeAtalho2: TMenuItem;
    Comousaresteprograma1: TMenuItem;
    N13: TMenuItem;
    Sairdosistema1: TMenuItem;
    Panel13: TPanel;
    ComboBoxEx1: TComboBoxEx;
    ImageList1: TImageList;
    barranome: TAction;
    Fornecedor3: TMenuItem;
    Cadastros1: TMenuItem;
    EntradasSadas1: TMenuItem;
    PedidoFornecedor1: TMenuItem;
    PedidoCliente1: TMenuItem;
    EntradadeMercadorias1: TMenuItem;
    Vendedor3: TMenuItem;
    N14: TMenuItem;
    Osmaisvendidos1: TMenuItem;
    Osmenosvendidos1: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    CONSULTAERAL1: TMenuItem;
    SpeedButton2: TSpeedButton;
    Panel14: TPanel;
    Sobreoprograma1: TMenuItem;
    Timer1: TTimer;
    N17: TMenuItem;
    Sistemaoperacional1: TMenuItem;
    odadordeCD1: TMenuItem;
    Cronmetro1: TMenuItem;
    ltimodiadoms1: TMenuItem;
    ImageList2: TImageList;
    jogos1: TMenuItem;
    Eart1: TMenuItem;
    Swat1: TMenuItem;
    Windows1: TMenuItem;
    Empresarial1: TMenuItem;
    MediaPlay1: TMenuItem;
    ScanDisk1: TMenuItem;
    ArquivosdeWindows1: TMenuItem;
    Ligar1: TMenuItem;
    Conectar1: TMenuItem;
    Pedido1: TMenuItem;
    Saldo1: TMenuItem;
    Futebol1: TMenuItem;
    Timer2: TTimer;
    N18: TMenuItem;
    Aniversariantes1: TMenuItem;
    Aniversariantesdoms1: TMenuItem;
    BackUp2: TMenuItem;
    Windows2: TMenuItem;
    N19: TMenuItem;
    Recibo1: TMenuItem;
    Boleto1: TMenuItem;
    Contasareceber2: TMenuItem;
    Contasapagar2: TMenuItem;
    N20: TMenuItem;
    ajuda: TAction;
    Pedido2: TMenuItem;
    Saldo2: TMenuItem;
    Ajuda2: TMenuItem;
    N21: TMenuItem;
    Etiqueta1: TMenuItem;
    N22: TMenuItem;
    Cheque1: TMenuItem;
    Funcionrio1: TMenuItem;
    digitar: TAction;
    ClculodeCalendrio1: TMenuItem;
    LABEL1: TStaticText;
    Lembrete1: TMenuItem;
    GravarSom1: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    Ajenda: TMenuItem;
    MnimoemEstoque1: TMenuItem;
    minimo: TAction;
    procedure FormActivate(Sender: TObject);
    procedure Cadastro1Click(Sender: TObject);
    procedure CadastroCliente1Click(Sender: TObject);
    procedure Locao1Click(Sender: TObject);
    procedure Cheques1Click(Sender: TObject);
    procedure Calculadora1Click(Sender: TObject);
    procedure Word1Click(Sender: TObject);
    procedure Excel1Click(Sender: TObject);
    procedure Internet1Click(Sender: TObject);
    procedure ContasaPagar1Click(Sender: TObject);
    procedure ContasaReceber1Click(Sender: TObject);
    procedure Fornecedor1Click(Sender: TObject);
    procedure Vendedor1Click(Sender: TObject);
    procedure NotaFiscal1Click(Sender: TObject);
    procedure PedidoaoFornecedor1Click(Sender: TObject);
    procedure EntradadeProduto1Click(Sender: TObject);
    procedure FluxodeCaixa1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure EstoqueParcial1Click(Sender: TObject);
    procedure BackUp1Click(Sender: TObject);
    procedure restaurarBackUp1Click(Sender: TObject);
    procedure bprClick(Sender: TObject);
    procedure bforClick(Sender: TObject);
    procedure bcliClick(Sender: TObject);
    procedure bpedcClick(Sender: TObject);
    procedure bentClick(Sender: TObject);
    procedure bnotaClick(Sender: TObject);
    procedure bcontpClick(Sender: TObject);
    procedure bcontrClick(Sender: TObject);
    procedure bfluxoClick(Sender: TObject);
    procedure CadastrodeEstado1Click(Sender: TObject);
    procedure CadastroCondFaturamento1Click(Sender: TObject);
    procedure bvendClick(Sender: TObject);
    procedure Cotao1Click(Sender: TObject);
    procedure fluxosinteticoExecute(Sender: TObject);
    procedure pedfClick(Sender: TObject);
    procedure estoqueExecute(Sender: TObject);
    procedure Produto1Click(Sender: TObject);
    procedure bcotaClick(Sender: TObject);
    procedure Cliente1Click(Sender: TObject);
    procedure Clientesemmovimento1Click(Sender: TObject);
    procedure Produtosemmovimento1Click(Sender: TObject);
    procedure VendanoBalcao1Click(Sender: TObject);
    procedure Dadosdaempresa1Click(Sender: TObject);
    procedure logotipoExecute(Sender: TObject);
    procedure Vendedor2Click(Sender: TObject);
    procedure Estado1Click(Sender: TObject);
    procedure CondFaturamento1Click(Sender: TObject);
    procedure Produto2Click(Sender: TObject);
    procedure Fornecedor2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure eclasdeAtalho1Click(Sender: TObject);
    procedure Comousaroprograma1Click(Sender: TObject);
    procedure eclasdeAtalho2Click(Sender: TObject);
    procedure Comousaresteprograma1Click(Sender: TObject);
    procedure Sairdosistema1Click(Sender: TObject);
    procedure ComboBoxEx1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure barranomeExecute(Sender: TObject);
    procedure ComboBoxEx1Change(Sender: TObject);
    procedure Fornecedor3Click(Sender: TObject);
    procedure Vendedor3Click(Sender: TObject);
    procedure EntradadeMercadorias1Click(Sender: TObject);
    procedure Osmaisvendidos1Click(Sender: TObject);
    procedure Osmenosvendidos1Click(Sender: TObject);
    procedure CONSULTAERAL1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure Sobreoprograma1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Sistemaoperacional1Click(Sender: TObject);
    procedure Eart1Click(Sender: TObject);
    procedure Cronmetro1Click(Sender: TObject);
    procedure Swat1Click(Sender: TObject);
    procedure Empresarial1Click(Sender: TObject);
    procedure Windows1Click(Sender: TObject);
    procedure MediaPlay1Click(Sender: TObject);
    procedure ScanDisk1Click(Sender: TObject);
    procedure ArquivosdeWindows1Click(Sender: TObject);
    procedure Ligar1Click(Sender: TObject);
    procedure ltimodiadoms1Click(Sender: TObject);
    procedure Conectar1Click(Sender: TObject);
    procedure Pedido1Click(Sender: TObject);
    procedure Saldo1Click(Sender: TObject);
    procedure Futebol1Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
    procedure Aniversariantes1Click(Sender: TObject);
    procedure Aniversariantesdoms1Click(Sender: TObject);
    procedure Recibo1Click(Sender: TObject);
    procedure Boleto1Click(Sender: TObject);
    procedure Contasapagar2Click(Sender: TObject);
    procedure Contasareceber2Click(Sender: TObject);
    procedure ajudaExecute(Sender: TObject);
    procedure Cliente2Click(Sender: TObject);
    procedure Pedido2Click(Sender: TObject);
    procedure Saldo2Click(Sender: TObject);
    procedure Ajuda2Click(Sender: TObject);
    procedure Etiqueta1Click(Sender: TObject);
    procedure Cheque1Click(Sender: TObject);
    procedure Funcionrio1Click(Sender: TObject);
    procedure digitarExecute(Sender: TObject);
    procedure ClculodeCalendrio1Click(Sender: TObject);
    procedure Lembrete1Click(Sender: TObject);
    procedure GravarSom1Click(Sender: TObject);
    procedure AjendaClick(Sender: TObject);
    procedure MnimoemEstoque1Click(Sender: TObject);
    procedure minimoExecute(Sender: TObject);
  private
    { Private declarations }
  public

  controle, controle1, st, st1, st2 : string;
  i, it:integer;

    { Public declarations }
  end;

  function UltimodoMes(wMes, wAno : Word) : Word;

var
  fmenu: Tfmenu;

implementation

uses uagenda, uboleto, urecibo, uajuda, UnitInicial, Unpagar, uvenda, UnitFluxo, UnitProduto, UnitFornecedor, UPedido, UnitVendedor, unota,
  uestado, UnitCliente, UCondPgto, ucotacao, UnitCheque, ureceber,
  upedidofornecedor, uestoque, unbackup, urestore, ulistaproduto, UnitDadoEmpresa,
  uconsultageral, udm, uabout, ucd, Main, uswat, ucontrolefornecedor,  uentrada,
  ufootbal, ucontrolepedido, UnitEtiqueta, uimpcheque, ufuncionario;


function UltimodoMes(wMes, wAno : Word) : Word;
var
  UltMes : TDateTime;
begin
  if wMes > 12 then
    raise ERangeError.Create('Mês inválido');
// mês seguinte
  Inc(wMes);
// se mês > 12 incrementa o ano e volta mês a 1
  if wMes > 12 then begin
    wMes := 1;
    Inc(wAno);
  end;
// pega data do último do mês
  UltMes := EncodeDate(wAno,wMes,1)-1;
// decodifica para pegar o último dia do mês
  DecodeDate(UltMes,wAno,wMes,Result);
end;


{$R *.DFM}

procedure Tfmenu.FormActivate(Sender: TObject);
begin
           FInicial.Timer2.Enabled := False;
          FInicial.Timer1.Enabled := False;
         FInicial.Hide;
       // FInicial.Free;
       Caption := '  MENU INICIAL    -     EMPRESARIAL     -     GNOME SISTEMAS    -   HOJE: ' + DateToStr(Now) + '  -  ';
      Aniversariantes1Click(self);
       end;

procedure Tfmenu.Cadastro1Click(Sender: TObject);
begin

    controle := 'produto';
     Application.CreateForm (TFProduto, FProduto);
      FProduto.PageControl1.ActivePageIndex := 1;
       fproduto.tbgrupo.Open;
        fdm.tbproduto.Open;

       fdm.tbproduto.MasterSource := fproduto.dsgrupo;

         FProduto.formatartbExecute(self);
          FProduto.ShowModal;
           FProduto.Release;
end;

procedure Tfmenu.CadastroCliente1Click(Sender: TObject);
begin

     controle := 'cliente';

     Application.CreateForm (tFCliente, FCliente);
       fdm.tbcliente.Open;
        fdm.tbvendedor.open;
         fdm.tbestado.open;
          fdm.tbfatura.open;
         FCliente.formatarexecute(self);
        FCliente.PageControl1.ActivePageIndex := 0;
       FCliente.ShowModal;
      FCliente.Release;

end;

procedure Tfmenu.Locao1Click(Sender: TObject);
begin

       controle := 'pedidocliente';

        Application.CreateForm(Tfpedido, fpedido);
         fpedido.tbpedido.open;
          fpedido.tbitem.open;
           fdm.tbfatura.open;
            fpedido.PageControl1.ActivePageIndex := 0;
             fdm.tbvendedor.open;
              fdm.tbestado.open;
               fpedido.formatarexecute (self);
                fpedido.ShowModal;
                 fpedido.Release;
end;

procedure Tfmenu.Cheques1Click(Sender: TObject);
begin

    controle := 'cheque';
    
     Application.CreateForm (TFCheque, FCheque);
      FCheque.tbCheque.Open;
       FCheque.ShowModal;
        FCheque.Release;
end;

procedure Tfmenu.Calculadora1Click(Sender: TObject);
begin
     WinExec ('Calc.exe',SW_Show);
end;

procedure Tfmenu.Word1Click(Sender: TObject);
begin
          WinExec ('C:\Arquivos de programas\Microsoft Office\Office\WinWord',SW_Show);
end;

procedure Tfmenu.Excel1Click(Sender: TObject);
begin
          WinExec ('C:\Arquivos de programas\Microsoft Office\Office\Excel',SW_Show);
end;

procedure Tfmenu.Internet1Click(Sender: TObject);
begin
          WinExec ('C:\Arquivos de programas\Internet Explorer\Iexplore',SW_Show);
end;



procedure Tfmenu.ContasaPagar1Click(Sender: TObject);
begin

       controle := 'pagar';
       
        application.CreateForm (tfpagar, fpagar);
         fpagar.pagecontrol1.activepageindex := 0;
          fdm.tbpagar.open;
           fpagar.formatarexecute(self);
            fpagar.showmodal;
             fpagar.release;
end;

procedure Tfmenu.ContasaReceber1Click(Sender: TObject);
begin

       controle := 'receber';
       
        Application.CreateForm(TFreceber, Freceber);
         fdm.tbreceber.open;
          Freceber.pagecontrol1.activepageindex := 0;
           Freceber.formatarexecute(self);
            Freceber.ShowModal;
             Freceber.Release;
end;

procedure Tfmenu.Fornecedor1Click(Sender: TObject);
begin

     controle := 'fornecedor';

       Application.CreateForm (tffornecedor, ffornecedor);
        fdm.tbfornecedor.Open;
         fdm.tbfatura.Open;

          ffornecedor.formatarexecute(self);
           ffornecedor.ShowModal;
            ffornecedor.Release;
end;

procedure Tfmenu.Vendedor1Click(Sender: TObject);
begin
      controle := 'vendedor';
       Application.CreateForm (tFVendedor, FVendedor);
        fdm.TbVendedor.Open;
         FVendedor.formatarexecute(self);
          FVendedor.ShowModal;
           FVendedor.Release;
            fdm.TbVendedor.close;
end;

procedure Tfmenu.NotaFiscal1Click(Sender: TObject);
begin

       controle := 'nota';
        Application.CreateForm(Tfnota, fnota);

        fnota.tbnota.open;
         fnota.tbitem.open;
          fdm.tbvendedor.open;
           fnota.FormatarExecute(self);
            fnota.ShowModal;
             fnota.Release;
end;

procedure Tfmenu.PedidoaoFornecedor1Click(Sender: TObject);
begin

       fmenu.controle := 'pedidofornecedor';

        Application.CreateForm(tfpedidofornecedor, fpedidofornecedor);
         fpedidofornecedor.tbpedido.open;
          fpedidofornecedor.tbitem.open;
           fdm.tbproduto.Open;
            fdm.tbfornecedor.Open;
             fpedidofornecedor.PageControl1.ActivePageIndex := 0;
              fpedidofornecedor.formatarexecute(self);
               fpedidofornecedor.ShowModal;
                fpedidofornecedor.Release;


end;

procedure Tfmenu.EntradadeProduto1Click(Sender: TObject);
begin
       fmenu.controle := 'entrada';

        Application.CreateForm(Tfentrada, fentrada);
         fentrada.PageControl1.ActivePageIndex := 0;
          fentrada.tbentrada.open;
           fdm.tbfatura.open;
            fentrada.tbitem.open;
             fdm.tbproduto.open;
              fentrada.formatarexecute(self);
               fentrada.ShowModal;
                fentrada.Release;

end;

procedure Tfmenu.FluxodeCaixa1Click(Sender: TObject);
begin
      fluxosinteticoexecute(self);

       Application.CreateForm(tffluxo, ffluxo);

        with ffluxo.querysintetico do begin
         close;
          sql.clear;
           sql.add( 'select (Campo6) as Vencimento, (Campo1)as Entradas, (Campo3)as Saídas, (Campo4) as Saldo,');
            sql.add ('(Campo5) as Acúmulo from tbauxiliar order by vencimento');
             open;
              end;



             ffluxo.PageControl1.ActivePageIndex := 1;
              ffluxo.ShowModal;
               ffluxo.Release;

end;

procedure Tfmenu.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin

      // application.CreateForm(tfinicial,finicial);
        FInicial.Close;
end;

procedure Tfmenu.EstoqueParcial1Click(Sender: TObject);
begin

        controle:='estoque';

        estoqueexecute(self);

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select (campo1) as Código, (campo2) as Produto, sum(campo3)as Entradas,');
            sql.add (' sum(campo4) as Saídas, (campo5)as Saldo from tbauxiliar group by Código, Produto, Saldo');
             open;
        end;

            Application.CreateForm(tfestoque, festoque);
             festoque.ShowModal;
              festoque.Release;
               fdm.Query1.close;

end;
procedure Tfmenu.BackUp1Click(Sender: TObject);
begin
       Application.CreateForm (tFBackup, FBackup);
       FBackup.showmodal;
         FBackup.release;
end;

procedure Tfmenu.restaurarBackUp1Click(Sender: TObject);
begin
      Application.CreateForm (tfrestore, frestore);
        frestore.showmodal;
         frestore.release;
end;

procedure Tfmenu.bprClick(Sender: TObject);
begin
        Cadastro1Click(self);
end;

procedure Tfmenu.bforClick(Sender: TObject);
begin
        Fornecedor1Click(self);
end;

procedure Tfmenu.bcliClick(Sender: TObject);
begin
        CadastroCliente1Click (Self);
end;

procedure Tfmenu.bpedcClick(Sender: TObject);
begin
        Locao1Click(self);
end;

procedure Tfmenu.bentClick(Sender: TObject);
begin
        EntradadeProduto1Click(self);
end;

procedure Tfmenu.bnotaClick(Sender: TObject);
begin
        NotaFiscal1Click(self);
end;

procedure Tfmenu.bcontpClick(Sender: TObject);
begin
        ContasaPagar1Click(self);
end;

procedure Tfmenu.bcontrClick(Sender: TObject);
begin
        ContasaReceber1Click(self);
end;

procedure Tfmenu.bfluxoClick(Sender: TObject);
begin
        FluxodeCaixa1Click(self);
end;

procedure Tfmenu.CadastrodeEstado1Click(Sender: TObject);
begin

       controle := 'estado';
        application.CreateForm(tFestado,Festado);
         fdm.tbestado.open;
          Festado.showmodal;
           Festado.release;
            fdm.tbestado.Close;

end;

procedure Tfmenu.CadastroCondFaturamento1Click(Sender: TObject);
begin
       controle := 'condfatura';
        application.CreateForm(tfcondfatura,fcondfatura);
         fdm.tbfatura.open;
          fcondfatura.showmodal;
           fcondfatura.release;
            fdm.tbfatura.Close;
end;

procedure Tfmenu.bvendClick(Sender: TObject);
begin
        Vendedor1Click(self);
end;

procedure Tfmenu.Cotao1Click(Sender: TObject);
begin
       Application.CreateForm(tfcotacao, fcotacao);

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select Distinct Data, (Fantasia) as Fornecedor, (Codigo) as Código, (nome) as Produto, (vrunit) as Valor from tbentradaitem');
            open;
        end;

             fcotacao.ShowModal;
              fcotacao.Release;

end;

procedure Tfmenu.fluxosinteticoExecute(Sender: TObject);
var
 tot : real;
begin

      tbauxiliar.close;
      tbauxiliar.EmptyTable;


        ///// contas a receber
        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add( 'select (datavencimento) as Vencimento, sum(vrdesconto)as valor from tbreceber');
            sql.add ( ' group by vencimento order by vencimento');
             open;
              end;

           ///// armazena contas a receber
           fdm.query1.First;
           tbauxiliar.open;

           while not fdm.query1.eof do begin
            tbauxiliar.insert;
            tbauxiliar['campo6'] := fdm.query1['vencimento'];
            tbauxiliar['campo1'] := fdm.query1['Valor'];
            fdm.query1.Next;
            tbauxiliar.Post;
           end;


        ///// contas a pagar
        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add( 'select (datavencimento) as Vencimento, sum(vrdesconto)as valor from tbpagar');
            sql.add ( ' group by vencimento order by vencimento');
             open;
              end;

           ///// armazena contas a pagar
           fdm.query1.First;
           tbauxiliar.open;

           while not fdm.query1.eof do begin
            tbauxiliar.insert;
            tbauxiliar['campo6'] := fdm.query1['vencimento'];
            tbauxiliar['campo3'] := fdm.query1['Valor'];
            fdm.query1.Next;
            tbauxiliar.Post;
           end;


        //// soma entradas e saidas da mesma data


        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add( 'select (campo6) as vencimento, sum(campo1)as Entrada, sum(campo3)as saida from tbauxiliar');
            sql.add ( ' group by vencimento order by vencimento');
             open;
              end;


      tbauxiliar.close;
      tbauxiliar.EmptyTable;
      tbauxiliar.open;

      /// armazena as somas

           fdm.query1.First;

           while not fdm.query1.eof do begin
            tbauxiliar.insert;
            tbauxiliar['campo6'] := fdm.query1['vencimento'];
            tbauxiliar['campo1'] := fdm.query1['entrada'];
            tbauxiliar['campo3'] := fdm.query1['saida'];
            fdm.query1.Next;
           end;

         tot := 0;

        tbauxiliar.First;
        while not tbauxiliar.eof do begin
        tbauxiliar.edit;
         tbauxiliar['campo4'] := (tbauxiliar.fields[0].asfloat - tbauxiliar.fields[2].asfloat);
         tot := tot + tbauxiliar['campo4'];
          tbauxiliar['campo5'] := tot;
           tbauxiliar.next;
            end;
        fdm.query1.close;
        tbauxiliar.close;


end;

procedure Tfmenu.pedfClick(Sender: TObject);
begin
        PedidoaoFornecedor1Click(self);
end;

procedure Tfmenu.estoqueExecute(Sender: TObject);

begin
     // entradas
        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select codigo, nome, sum(qtd)as entrada from tbentradaitem');
            sql.add (' group by codigo, nome');
            open;
        end;

        tbauxiliar.emptytable;
        tbauxiliar.open;

        while not fdm.query1.eof do begin
         tbauxiliar.insert;
          tbauxiliar['campo1'] := fdm.query1['codigo'];
           tbauxiliar['campo2'] := fdm.query1['nome'];
            tbauxiliar['campo3'] := fdm.query1['entrada'];
             fdm.query1.next
              end;

         fdm.query1.close;


        //////         SAIDAS


        with fdm.Query2 do begin
         close;
          sql.clear;
           sql.add ('select codigo, nome, sum(qtd) as saida from tbpedidoitem');
            sql.add (' where operacao ="P" group by codigo, nome');
            open;
        end;

        fdm.query2.first;

        while not fdm.query2.eof do begin

          if tbauxiliar.locate('campo1', fdm.query2['codigo'] ,[]) then begin
           tbauxiliar.edit;
             tbauxiliar['campo4'] := fdm.query2['saida'];
            end else begin

           tbauxiliar.insert;
            tbauxiliar['campo1'] := fdm.query2['codigo'];
             tbauxiliar['campo2'] := fdm.query2['nome'];
              tbauxiliar['campo4'] := fdm.query2['saida'];
               end;

               fdm.query2.next;
                end;

         fdm.query2.close;

         tbauxiliar.first;

         while not tbauxiliar.eof do begin
          tbauxiliar.edit;
           tbauxiliar.fields[4].asfloat := (tbauxiliar.fields[2].asfloat - tbauxiliar.fields[3].asfloat);
            tbauxiliar.next;
             end;
         tbauxiliar.close;


end;

procedure Tfmenu.Produto1Click(Sender: TObject);
begin
         Application.CreateForm (Tflistaproduto, flistaproduto);
          flistaproduto.st :='nenhum';
           flistaproduto.table1.open;
            flistaproduto.showmodal;

end;

procedure Tfmenu.bcotaClick(Sender: TObject);
begin
        Cotao1Click (self);
end;

procedure Tfmenu.Cliente1Click(Sender: TObject);
begin

     Application.CreateForm (tFCliente, FCliente);
       fdm.tbcliente.Open;
        fdm.tbvendedor.open;
         fdm.tbestado.open;
          fdm.tbfatura.open;
         FCliente.formatarexecute(self);
         FCliente.PageControl1.ActivePageIndex := 1;
         Fcliente.PageControl1Change(self);
       FCliente.ShowModal;
      FCliente.Release;
     end;

procedure Tfmenu.Clientesemmovimento1Click(Sender: TObject);
var
MSG, st, st1 : STRING;
begin

          if InputQuery ('Cliente sem movimento', 'Cliente sem movimento desde: (digite a data abaixo "dd/mm/yyyy")', st) then begin

          st1 := formatdatetime ('mm/dd/yyyy', strtodate(st));

    with fdm.query1 do begin
     close;
      sql.clear;
       sql.add ('select distinct fantasia, max(data) as Data from tbpedido where data <= "'+ st1+'" group by fantasia order by fantasia');
        open;
         end;

    while not fdm.query1.Eof do begin
    if fdm.query1['fantasia'] <> null then
    msg := msg + fdm.query1['fantasia']+ #13;
    fdm.query1.next;
    end;

    showmessage('Cliente sem movimento desde:'  + St + #13+ #13 + msg);
    end;

end;

procedure Tfmenu.Produtosemmovimento1Click(Sender: TObject);
var
MSG, st, st1 : STRING;
begin

          if InputQuery ('Produto sem movimento', 'Produto sem movimento desde: (digite a data abaixo "dd/mm/yyyy")', st) then begin

           st1 := formatdatetime ('mm/dd/yyyy', strtodate(st));

    with fdm.query1 do begin
     close;
      sql.clear;
       sql.add ('select distinct codigo, nome, max(data) as data from tbpedidoitem where data <= "'+ st1+'" group by codigo, nome order by codigo');
        open;
         end;

    while not fdm.query1.Eof do begin
    if fdm.query1['codigo'] <> null then
    msg := msg + floattostr(fdm.query1['codigo'])+ '            ';
    if fdm.query1['nome'] <> null then
    msg := msg + fdm.query1['nome']+ #13;
    fdm.query1.next;
    end;



    showmessage('Produto sem movimento desde:'  + St+ #13+ #13 + 'Código -  Produto'+ #13+#13 + msg);
    end;


end;


procedure Tfmenu.VendanoBalcao1Click(Sender: TObject);
begin
       controle := 'balcao';
       
        Application.CreateForm(Tfbalcao, fbalcao);
         fbalcao.tbpedido.open;
          fbalcao.tbitem.open;
           fdm.tbfatura.open;
            fbalcao.formatarexecute(self);
             fbalcao.novoExecute(self);
              fbalcao.PageControl1.ActivePageIndex := 0;
               fbalcao.ShowModal;
                fbalcao.Release;

end;

procedure Tfmenu.Dadosdaempresa1Click(Sender: TObject);
var
st :string;

begin

       if inputquery('Dados', 'Digite a senha', st) then

       if uppercase(st) = 'XANIN' then
        FDadoEmpresa.showmodal
       ELSE
        Showmessage('senha inválida');

end;

procedure Tfmenu.logotipoExecute(Sender: TObject);
var
  MyFormat : Word;
  Bitmap : TBitMap;
  AData: THandle;
  APalette : HPALETTE;
begin
  Bitmap := TBitmap.Create;
  try

    if fileexists (extractfilepath(paramstr(0)) + '\imagem\logo.bmp') then begin
    Bitmap.LoadFromFile(extractfilepath(paramstr(0)) + '\imagem\logo.bmp');
    Bitmap.SaveToClipBoardFormat(MyFormat,AData,APalette);
    ClipBoard.SetAsHandle(MyFormat,AData);
    end;
  finally
    Bitmap.Free;
  end;

end;

procedure Tfmenu.Vendedor2Click(Sender: TObject);
begin

     if controle <> 'vendedor' then begin
       controle1 := controle;
        Vendedor1Click(self);
       controle := controle1;

       if (controle = 'cliente') or (controle = 'pedidocliente') or (controle = 'nota') then
        fdm.tbvendedor.open;

     end else
     Showmessage('Vendedor já está aberto!!!');
        
end;

procedure Tfmenu.Estado1Click(Sender: TObject);
begin

     if controle <> 'estado' then begin

        controle1 := controle;
        CadastrodeEstado1Click(self);
        controle := controle1;

       if (controle = 'cliente') or (controle = 'pedidocliente') then
        fdm.tbestado.open;

     end else
     Showmessage('Estado já está aberto!!!');

end;

procedure Tfmenu.CondFaturamento1Click(Sender: TObject);
begin

     if controle <> 'condfatura' then begin


        controle1 := controle;
        CadastroCondFaturamento1Click(self);
        controle := controle1;

       if (controle = 'entrada') or (controle = 'pedidocliente') or (controle = 'cliente')or (controle = 'fornecedor') then
        fdm.tbfatura.open;

     end else
     Showmessage('Cond. Faturamento já está aberto!!!');
end;

procedure Tfmenu.Produto2Click(Sender: TObject);
begin

     if controle <> 'produto' then begin


        if controle = 'balcao' then begin
         fbalcao.Timer1.Enabled := false;
          fbalcao.Timer2.Enabled := false;
           end;

        controle1 := controle;
        Cadastro1Click(self);
        controle := controle1;
        
     end else
     Showmessage('Produto já está aberto!!!');

end;

procedure Tfmenu.Fornecedor2Click(Sender: TObject);
begin

     if controle <> 'fornecedor' then begin

        controle1 := controle;
        Fornecedor1Click(self);
        controle := controle1;

     end else
     Showmessage('Fornecedor já está aberto!!!');

end;

procedure Tfmenu.SpeedButton1Click(Sender: TObject);
begin
close;
end;

procedure Tfmenu.eclasdeAtalho1Click(Sender: TObject);
var
  Comp: Trichedit; // * variável Comp da classe TMemo
  texto : string;
begin
  Comp := Trichedit.Create (Self);  // * cria o componente Memo
  Comp.Parent := Self;    // * exibe o componente criado

  if fileexists (extractfilepath(paramstr(0)) + '\ajuda\ajudateclaatalho.txt') then
   comp.lines.loadfromfile (extractfilepath(paramstr(0)) + '\ajuda\ajudateclaatalho.txt');

  texto := comp.Text;
  comp.Destroy;

  Showmessage (texto);
end;

procedure Tfmenu.Comousaroprograma1Click(Sender: TObject);
begin
        Application.MessageBox('1 - Primeiramente cadastre todos os ítens do menu "Cadastro" na ordem dos menus.' + #13 +
         '2 - Estando cadastrados, poderá dar entradas e saídas.' + #13 +
         '3 - Para ficar mais prático, deverá dar entrada antes de vender.'+#13+
         '4 - Em todas as telas poderá consultar e emitir Relatórios/Impressões.' +#13+
         '5 - Consulte tecla de atalho para usar melhor os recursos deste programa.'+#13+
         '6 - Use o botão direito do mouse, para acessar o munu de cadastro.'+#13+
         '7 - Clique no botão NOVO, antes de inserir um registro, para gerar o código.',
         'COMO USAR ESTE PROGRAMA', MB_OK + MB_ICONWARNING );
end;

procedure Tfmenu.eclasdeAtalho2Click(Sender: TObject);
begin
        eclasdeAtalho1Click(self);
end;

procedure Tfmenu.Comousaresteprograma1Click(Sender: TObject);
begin
        Comousaroprograma1Click(self);
end;

procedure Tfmenu.Sairdosistema1Click(Sender: TObject);
begin
       if application.MessageBox('Deseja encerrar este programa?','Fechar',4) = mryes then begin
         FInicial.Close;
          end;
end;

procedure Tfmenu.ComboBoxEx1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

       timer2.Enabled := false;

        if key = 13 then
          barranomeexecute(self);

end;

procedure Tfmenu.barranomeExecute(Sender: TObject);
begin

    st := Copy(comboboxex1.Text,1,4);
    st2 := Copy(comboboxex1.Text,2,1);


    if  (st <> 'www.') or (st <>'WWW.') then begin

    i :=length(ComboBoxEx1.Text);
    it := 0;

     while it < i do begin
      st1 := Copy(comboboxex1.Text,it,1);
       if st1 = '@' then
        st := st1;
         it := it + 1 ;
          end;
           end;


          if st = '@' then

           ShellExecute(Handle,'open',pchar ('mailto:' + ComboBoxEx1.Text + '?subject='+
              'Digite aqui o assunto'), nil,'',Sw_Show)

          else if (uppercase(st) = 'WWW.')then
           ShellExecute(Handle,'open',pchar (ComboBoxEx1.Text), nil,'',Sw_ShowNormal)

          else if st2 = ':' then
           ShellExecute(Handle,'open',pchar (ComboBoxEx1.Text), nil,'',Sw_ShowNormal)

         else if uppercase (ComboBoxEx1.Text) = 'CLIENTE' then
          CadastroCliente1Click (Self)

         else if uppercase (ComboBoxEx1.Text) = 'PRODUTO' then
          Cadastro1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'VENDEDOR' THEN
          Vendedor1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'FORNECEDOR' THEN
          Fornecedor1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'PEDIDO FORNECEDOR' THEN
          PedidoaoFornecedor1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'ENTRADA' THEN
          EntradadeProduto1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'PEDIDO CLIENTE' THEN
         Locao1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'NOTA FISCAL' THEN
          NotaFiscal1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'COTACAO' THEN
          Cotao1Click (self)

         else if uppercase (ComboBoxEx1.Text) = 'CONTAS A PAGAR' THEN
         ContasaPagar1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'CONTAS A RECEBER' THEN
          ContasaReceber1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'FLUXO DE CAIXA' THEN
          FluxodeCaixa1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'ESTOQUE' THEN
          EstoqueParcial1click(self)

         else if uppercase (ComboBoxEx1.Text) = 'ESTADO' THEN
          CadastrodeEstado1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'FATURAMENTO' THEN
          CadastroCondFaturamento1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'BALCAO' THEN
          VendanoBalcao1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'FUNCIONARIO' THEN
          Funcionrio1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'RECIBO' THEN
          Recibo1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'BOLETO' THEN
          Boleto1Click(self)

         else if uppercase (ComboBoxEx1.Text) = 'CHEQUE' THEN
          Cheque1Click(self)

          else Showmessage('Nenhuma ocorrência encontrada!!!');

end;

procedure Tfmenu.ComboBoxEx1Change(Sender: TObject);
begin

     digitarexecute(self);

end;

procedure Tfmenu.Fornecedor3Click(Sender: TObject);
begin
        Fornecedor1Click(self);
end;

procedure Tfmenu.Vendedor3Click(Sender: TObject);
begin
Vendedor1Click(self);
end;

procedure Tfmenu.EntradadeMercadorias1Click(Sender: TObject);
begin
       fmenu.controle := 'entrada';

        Application.CreateForm(Tfentrada, fentrada);
         fentrada.PageControl1.ActivePageIndex := 1;
          fentrada.tbentrada.open;
           fdm.tbfatura.open;
            fentrada.tbitem.open;
             fdm.tbproduto.open;
              fentrada.formatarexecute(self);
               fentrada.PageControl1Change(self);
                fentrada.ShowModal;
                 fentrada.Release;
end;

procedure Tfmenu.Osmaisvendidos1Click(Sender: TObject);
var
st, st1:real;
 st2, st3 : string;
begin

          if InputQuery ('Os produtos mais vendidos', 'A partir de que data?: (digite a data abaixo "dd/mm/yyyy")', st3) then begin

           st2 := formatdatetime ('mm/dd/yyyy', strtodate(st3));


        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add ('select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem where data >= "'+ st2+'" and operacao ="P" group by codigo, nome order by vendido desc');
            open;

        fdm.query1.first;

        st:= (fdm.query1.fieldbyname('vendido').AsFloat);

        fdm.query1.MoveBy(19);

        st1 := (fdm.query1.fieldbyname('vendido').AsFloat);

        fdm.query1.Filter := 'vendido >=''' + floattostr(st1) + ''' and vendido <=''' + floattostr(st) + '''';
         fdm.query1.Filtered := true;


         application.CreateForm(tfvenda, fvenda);
          fvenda.showmodal;
           fvenda.release;
             fdm.query1.Filtered := false;
              fdm.query1.Filter := '';
end;
end;
    end;
procedure Tfmenu.Osmenosvendidos1Click(Sender: TObject);
var
st, st1:real;
 st2, st3 : string;
begin

          if InputQuery ('Os produtos mais vendidos', 'A partir de que data?: (digite a data abaixo "dd/mm/yyyy")', st3) then begin

           st2 := formatdatetime ('mm/dd/yyyy', strtodate(st3));

        with fdm.query1 do begin
         close;
          sql.clear;
           sql.add ('select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem where data >= "'+ st2+'" and operacao ="P" group by codigo, nome order by vendido');
            open;

        fdm.query1.first;

        st:= (fdm.query1.fieldbyname('vendido').AsFloat);

        fdm.query1.MoveBy(19);

        st1 := (fdm.query1.fieldbyname('vendido').AsFloat);

        fdm.query1.Filter := 'vendido >=''' + floattostr(st) + ''' and vendido <=''' + floattostr(st1) + '''';
         fdm.query1.Filtered := true;


         application.CreateForm(tfvenda, fvenda);
          fvenda.showmodal;
           fvenda.release;
             fdm.query1.Filtered := false;
              fdm.query1.Filter := '';
end;
     end;

end;

procedure Tfmenu.CONSULTAERAL1Click(Sender: TObject);
begin
       controle := 'consultageral';
        application.Createform(tfconsultageral, fconsultageral);
         fconsultageral.showmodal;
          fconsultageral.release;
end;

procedure Tfmenu.SpeedButton2Click(Sender: TObject);
begin
        VendanoBalcao1Click(self);
end;

procedure Tfmenu.Sobreoprograma1Click(Sender: TObject);
begin

       application.CreateForm(tfabout, fabout);
        fabout.showmodal;
         fabout.Release;
end;

procedure Tfmenu.Timer1Timer(Sender: TObject);
var
  Texto :  String;
begin
  Texto := fmenu.Caption;
  fmenu.Caption := Copy(Texto,2,Length(Texto))+Texto[1];

  IF label1.Visible = true then
  label1.caption := Copy(label1.Caption,2,Length(label1.Caption))+label1.Caption[1];
end;

procedure Tfmenu.Sistemaoperacional1Click(Sender: TObject);
begin
    ShellAbout(Handle,'Sistema Operacional',
    'Esta informação é parcial',Application.Icon.Handle);

end;

procedure Tfmenu.Eart1Click(Sender: TObject);
var
st : pchar;
begin

       st := pchar(extractfilepath(paramstr(0)) + '\EarthPng.exe');

        winexec(st, sw_show);
end;

procedure Tfmenu.Cronmetro1Click(Sender: TObject);
var
st : pchar;
begin

       st := pchar(extractfilepath(paramstr(0)) + '\cronometro.exe');

        winexec(st, sw_show);

end;

procedure Tfmenu.Swat1Click(Sender: TObject);
begin
      application.CreateForm(tfswat, fswat);
       fswat.showmodal;
        fswat.Release;
end;

procedure Tfmenu.Empresarial1Click(Sender: TObject);
begin
        application.CreateForm(tfcd, fcd);
         fcd.show;
          
end;

procedure Tfmenu.Windows1Click(Sender: TObject);
begin
        winexec ('cdplayer.exe',sw_show);
end;

procedure Tfmenu.MediaPlay1Click(Sender: TObject);
begin
        winexec ('mplayer.exe',sw_show);
end;

procedure Tfmenu.ScanDisk1Click(Sender: TObject);
begin
        winexec ('scandskw.exe',sw_show);
end;

procedure Tfmenu.ArquivosdeWindows1Click(Sender: TObject);
begin
        winexec ('winfile.exe',sw_show);
end;

procedure Tfmenu.Ligar1Click(Sender: TObject);
begin
        winexec ('dialer.exe',sw_show);
end;

procedure Tfmenu.ltimodiadoms1Click(Sender: TObject);
var
st, st1 : string;

begin
         st := formatdatetime('mm',date);
         st1 := formatdatetime('yyyy',date);

       if inputquery('Mês', 'Digite o mês (número):', st)then
        if st<>'' then begin


       if inputquery('Ano', 'Digite o ano:', st1)then
        if st1<>'' then begin

  try
    ShowMessage('Último Dia: '+IntToStr(UltimodoMes(StrToInt(st),StrToInt(st1))));
  except
    On EConvertError do
      MessageDlg('Um dos valores não é valido',mtError,[mbOk],0);
  end;
   end;
    end;

end;

procedure Tfmenu.Conectar1Click(Sender: TObject);
 var
        st : string;
begin

        if inputquery('Conectar', 'Digite o nome da conecção DialUp (Ex: ig, uol, aol, etc:',st) then
         WinExec(PChar('rundll32.exe rnaui.dll,RnaDial '+ st),SW_SHOW + 0);



end;

procedure Tfmenu.Pedido1Click(Sender: TObject);
begin
        Application.CreateForm(tfpedidofornecedor, fpedidofornecedor);
         fpedidofornecedor.tbpedido.open;
          fpedidofornecedor.tbitem.open;
            fpedidofornecedor.PageControl1.ActivePageIndex := 1;
             fpedidofornecedor.PageControl1Change(self);
              fpedidofornecedor.ShowModal;
               fpedidofornecedor.Release;
end;

procedure Tfmenu.Saldo1Click(Sender: TObject);
begin
        Application.CreateForm(tfpedidofornecedor, fpedidofornecedor);

         with fpedidofornecedor do begin
          tbpedido.open;
           tbitem.open;
            formatarexecute(self);
             end;

        Application.CreateForm(tfcontrolefornecedor, fcontrolefornecedor);
         fcontrolefornecedor.showmodal;
          fcontrolefornecedor.release;

end;

procedure Tfmenu.Futebol1Click(Sender: TObject);
begin
        application.CreateForm(tffutebol, ffutebol);
         ffutebol.showmodal;
          ffutebol.release;
end;

procedure Tfmenu.Timer2Timer(Sender: TObject);
begin

  if comboboxex1.ItemIndex = 19 then BEGIN
   comboboxex1.Text := 'MENU PRINCIPAL';
    timer2.Enabled := false;
  END else
    comboboxex1.ItemIndex := comboboxex1.ItemIndex + 1;
    
end;

procedure Tfmenu.FormDeactivate(Sender: TObject);
begin
        timer2.Enabled := false;
end;

procedure Tfmenu.Aniversariantes1Click(Sender: TObject);
var
st, st1, MSG:string;

       begin

       st := formatdatetime('dd',date);
        st1 := datetostr(now);

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add('select nomefantasia, fone from tbcliente where extract(day from  nascimento) = "' + st + '"  order by nomefantasia');
            open;

     if fdm.query1['nomefantasia'] <> null then begin

     fdm.query1.first;

    while not fdm.query1.Eof do begin
    if fdm.query1['fone'] <> '(  )    -' then
    msg := msg + '-  ' + fdm.query1['fone']
    else
    msg := msg + '-  Sem telefone  ' ;
    if fdm.query1['nomefantasia'] <> null then
    msg := msg + '      -  ' + fdm.query1['nomefantasia']+ #13;
    fdm.query1.next;
    end;

    showmessage('Aniversariantes de hoje:'  + St1 + #13+ #13 + msg);

    end else

    showmessage('Nenhum cliente faz aniversário hoje.');
    end;
end;

procedure Tfmenu.Aniversariantesdoms1Click(Sender: TObject);
var
st, MSG:string;

       begin


       st := formatdatetime('mm',date);
       st1 := formatdatetime('mmmm',date);

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add('select fone, nascimento, nomefantasia from tbcliente where extract (month from nascimento) = "' + st + '"  order by nascimento');
            open;

     if fdm.query1['nomefantasia'] <> null then begin

     fdm.query1.first;

    while not fdm.query1.Eof do begin
    if fdm.query1['fone'] <> '(  )    -' then
    msg := msg + '-  ' + fdm.query1['fone']
    else
    msg := msg + '-  Sem telefone  ' ;

    if fdm.query1['nascimento'] <> null then
    msg := msg +  '      -  ' + datetostr(fdm.query1['nascimento']);

    if fdm.query1['nomefantasia'] <> null then
    msg := msg + ' -  ' + fdm.query1['nomefantasia']+ #13;
    fdm.query1.next;
    end;

    showmessage('Aniversariantes do mês de: '  +  St1 + #13+ #13 + msg);

    end else

    showmessage('Nenhum cliente faz aniversário este mês.');
    end;
end;

procedure Tfmenu.Recibo1Click(Sender: TObject);
begin
         Application.CreateForm(tfrecibo, frecibo);
          frecibo.showmodal;
           frecibo.release;
end;

procedure Tfmenu.Boleto1Click(Sender: TObject);
begin
         Application.CreateForm(tfboleto, fboleto);
          fboleto.showmodal;
           fboleto.release;
end;

procedure Tfmenu.Contasapagar2Click(Sender: TObject);
begin

     if controle <> 'pagar' then begin

        controle1 := controle;
        ContasaPagar1Click(self);
        controle := controle1;

     end else
     Showmessage('Contas a Pagar já aberta!!!')        
end;

procedure Tfmenu.Contasareceber2Click(Sender: TObject);
begin

     if controle <> 'receber' then begin

        controle1 := controle;
        ContasaReceber1Click(self);
        controle := controle1;

     end else
     Showmessage('Contas a Receber já aberta!!!');

end;

procedure Tfmenu.ajudaExecute(Sender: TObject);
var
  Comp: Trichedit; // * variável Comp da classe TMemo
  texto : string;
begin
  Comp := Trichedit.Create (Self);  // * cria o componente Memo
  Comp.Parent := Self;    // * exibe o componente criado

  if fileexists (extractfilepath(paramstr(0)) + '\ajuda\ajudamenu.txt') then
   comp.lines.loadfromfile (extractfilepath(paramstr(0)) + '\ajuda\ajudamenu.txt');

  texto := comp.Text;
  comp.Destroy;

  Showmessage (texto);


end;

procedure Tfmenu.Cliente2Click(Sender: TObject);
begin

     if controle <> 'cliente' then begin

        controle1 := controle;
        CadastroCliente1Click(self);
        controle := controle1;

     end else
     Showmessage('Cliente já está aberto!!!');
end;

procedure Tfmenu.Pedido2Click(Sender: TObject);
begin
        Application.CreateForm(Tfpedido, fpedido);
          fpedido.tbpedido.open;
           fpedido.tbitem.open;
            fdm.tbfatura.open;
             fpedido.PageControl1.ActivePageIndex := 1;
              fpedido.PageControl1Change(self);
               fdm.tbvendedor.open;
                fpedido.ShowModal;
                 fpedido.Release;
end;

procedure Tfmenu.Saldo2Click(Sender: TObject);
begin
        Application.CreateForm(tfpedido, fpedido);

         with fpedido do begin
          tbpedido.open;
           tbitem.open;
            formatarexecute(self);
             end;

        Application.CreateForm(tfcontrolepedido, fcontrolepedido);
         fcontrolepedido.showmodal;
          fcontrolepedido.release;
           fpedido.release;

end;

procedure Tfmenu.Ajuda2Click(Sender: TObject);
var
  Comp: Trichedit; // * variável Comp da classe TMemo
  texto : string;
begin
  Comp := Trichedit.Create (Self);  // * cria o componente Memo
  Comp.Parent := Self;    // * exibe o componente criado

  if fileexists (extractfilepath(paramstr(0)) + '\ajuda\ajudamenu.txt') then
   comp.lines.loadfromfile (extractfilepath(paramstr(0)) + '\ajuda\ajudamenu.txt');

  texto := comp.Text;
  comp.Destroy;

  Showmessage (texto);

end;

procedure Tfmenu.Etiqueta1Click(Sender: TObject);
begin
        application.CreateForm(tfetiqueta, fetiqueta);
         fetiqueta.showmodal;
          fetiqueta.release;
end;

procedure Tfmenu.Cheque1Click(Sender: TObject);
begin
         Application.CreateForm(tfimpcheque, fimpcheque);
          fimpcheque.showmodal;
           fimpcheque.release;
end;

procedure Tfmenu.Funcionrio1Click(Sender: TObject);
begin
       controle := 'funcionario';
        Application.CreateForm (tffuncionario, ffuncionario);
         ffuncionario.tbfuncionario.Open;
          ffuncionario.tbitem.Open;
           ffuncionario.formatarExecute(self);
            ffuncionario.ShowModal;
             ffuncionario.Release;
              ffuncionario.tbfuncionario.close;
               ffuncionario.tbitem.close;
end;

procedure Tfmenu.digitarExecute(Sender: TObject);
begin
         if uppercase (ComboBoxEx1.Text) = 'CL' then
          ComboBoxEx1.Text := 'CLIENTE'

         else if uppercase (ComboBoxEx1.Text) = 'PR' then
          ComboBoxEx1.Text := 'PRODUTO'

         else if uppercase (ComboBoxEx1.Text) = 'VE' THEN
          ComboBoxEx1.Text := 'VENDEDOR'

         else if uppercase (ComboBoxEx1.Text) = 'FO' THEN
         ComboBoxEx1.Text := 'FORNECEDOR'

         else if uppercase (ComboBoxEx1.Text) = 'PEDIDO F' THEN
          ComboBoxEx1.Text := 'PEDIDO FORNECEDOR'

         else if uppercase (ComboBoxEx1.Text) = 'EN' THEN
          ComboBoxEx1.Text := 'ENTRADA'

         else if uppercase (ComboBoxEx1.Text) = 'PE' THEN
         ComboBoxEx1.Text := 'PEDIDO CLIENTE'

         else if uppercase (ComboBoxEx1.Text) = 'NO' THEN
          ComboBoxEx1.Text := 'NOTA FISCAL'

         else if uppercase (ComboBoxEx1.Text) = 'COT' THEN
          ComboBoxEx1.Text := 'COTACAO'

         else if uppercase (ComboBoxEx1.Text) = 'CON' THEN
         ComboBoxEx1.Text := 'CONTAS A RECEBER'

         else if uppercase (ComboBoxEx1.Text) = 'CONTAS A P' THEN
          ComboBoxEx1.Text := 'CONTAS A PAGAR'

         else if uppercase (ComboBoxEx1.Text) = 'FL' THEN
          ComboBoxEx1.Text := 'FLUXO DE CAIXA'

         else if uppercase (ComboBoxEx1.Text) = 'ESTO' THEN
          ComboBoxEx1.Text := 'ESTOQUE'

         else if uppercase (ComboBoxEx1.Text) = 'ESTA' THEN
          ComboBoxEx1.Text := 'ESTADO'

         else if uppercase (ComboBoxEx1.Text) = 'FAT' THEN
          ComboBoxEx1.Text := 'FATURAMENTO'

         else if uppercase (ComboBoxEx1.Text) = 'BA' THEN
          ComboBoxEx1.Text := 'BALCAO'

         else if uppercase (ComboBoxEx1.Text) = 'FU' THEN
          ComboBoxEx1.Text := 'FUNCIONARIO'

         else if uppercase (ComboBoxEx1.Text) = 'RE' THEN
          ComboBoxEx1.Text := 'RECIBO'

         else if uppercase (ComboBoxEx1.Text) = 'BO' THEN
          ComboBoxEx1.Text := 'BOLETO'

         else if uppercase (ComboBoxEx1.Text) = 'CH' THEN
          ComboBoxEx1.Text := 'CHEQUE';


end;

procedure Tfmenu.ClculodeCalendrio1Click(Sender: TObject);
var
st1,st2,st3 :string;
begin

       st1 := datetostr(now);

        if inputquery('Cálculo de data','Este cálculo mostra qual dia do mês será de uma data a "X" dias. Digite a data inicial:',st1) then
         if inputquery('Cálculo de data','Desta data a quantos dias? Digite os dias:',st2) then

           st3 := DateToStr(strtodate(st1) + strtofloat(st2));

          showmessage (formatdatetime('dd/mm/yyyy',strtodate(st3))+  ' ('+  formatdatetime('dddd',strtodate(st3)) + ')');
end;

procedure Tfmenu.Lembrete1Click(Sender: TObject);

begin
        if Lembrete1.Checked = true then
         Lembrete1.Checked := false
        else begin
         if fdadoempresa.Memo4.text <> '' then
         label1.Caption := fdadoempresa.Memo4.text + '  ';
         Lembrete1.Checked := true;
         end;

         label1.Visible := Lembrete1.Checked = true;
end;

procedure Tfmenu.GravarSom1Click(Sender: TObject);
begin
        winexec ('Sndrec32.exe',sw_show);
end;

procedure Tfmenu.AjendaClick(Sender: TObject);
begin
        application.CreateForm(tfagenda, fagenda);
         fdm.tbagenda.Open;
          fagenda.formatarexecute(self);
           fagenda.showmodal;
            fagenda.release;
             fdm.tbagenda.Close;
end;

procedure Tfmenu.MnimoemEstoque1Click(Sender: TObject);
begin
       controle:='minimo';

        estoqueexecute(self);

        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select (campo1) as Codigo, (campo2) as Produto, ');
            sql.add ('(campo5)as Saldo from tbauxiliar ');
             open;
        end;

        minimoexecute(self);


            Application.CreateForm(tfestoque, festoque);
             festoque.ShowModal;
              festoque.Release;

end;

procedure Tfmenu.minimoExecute(Sender: TObject);
begin
        tbauxiliar.EmptyTable;
        tbauxiliar.Open;

        fdm.query1.first;
        fdm.tbproduto.Open;
        
        while not fdm.Query1.Eof do begin

         if fdm.tbproduto.Locate('codigo',fdm.query1['codigo'],[]) then begin

          if fdm.tbproduto['minimo'] > fdm.query1['saldo'] then begin

           tbauxiliar.insert;
            tbauxiliar['campo1'] :=  fdm.query1['codigo'];
             tbauxiliar['campo2'] :=  fdm.query1['produto'];
              tbauxiliar['campo3'] :=  fdm.tbproduto['minimo'];
               tbauxiliar['campo4'] :=  fdm.query1['saldo'];
                tbauxiliar['campo5'] :=  (fdm.tbproduto['minimo'] - fdm.query1['saldo']);
          end;
          end;

       fdm.Query1.next;

       end;

       tbauxiliar.Post;
       tbauxiliar.Close;


        with fdm.Query1 do begin
         close;
          sql.clear;
           sql.add ('select (campo1) as Código, (campo2) as Produto, (campo3) as Mínimo,');
            sql.add ('(campo4)as Saldo, (campo5) as Diferença from tbauxiliar ');
             open;
        end;




end;

end.

